package com.neuedu.corejava.ch12;

import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;

/**
 * 
 * @author myh
 * @version 2019年8月13日下午4:18:00
 *
 */
public class MyFileWriter {

	public static void charWriter() {
		File file = new File("c:/temp/abc.txt");
		// 创建文件目录
		file.getParentFile().mkdirs();

		FileWriter writer = null;
		try {

			if (!file.exists()) {
				// 创建文件
				file.createNewFile();
				System.out.println("创建成功");
			}

			// 以追加方式打开文件流；注意：默认参数为false，会清空原有内容，重新写入数据
			writer = new FileWriter(file, true);
			for (int i = 0; i < 100; i++) {
				String str = "Hello File" + i + "\r\n";
				writer.write(str);
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (writer != null) {
				try {
					// 调用close前默认调用flush刷新缓存
					writer.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}

	public static void byteWrite() {

	}

	public static void fileOutputStream() {
		File file = new File("c:/temp/abc.txt");
		// 创建文件目录
		file.getParentFile().mkdirs();
		// 有文件就删除
		if (file.exists()) {
			file.delete();
			System.out.println("删除成功");
		}
		FileOutputStream writer = null;
		try {

			// 创建文件
			file.createNewFile();
			System.out.println("创建成功");
			writer = new FileOutputStream(file);
			for (int i = 0; i < 100; i++) {
				String str = "Hello File" + i + "\r\n";
				// 字节流在写数据时要把数据转换成字节数组，再输出到文件中
				writer.write(str.getBytes());
				//数据量大时强制刷新数据，防止添加数据出错时前面添加的数据没保存
				writer.flush();
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (writer != null) {
				try {
					// 调用close前默认调用flush刷新缓存
					writer.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}

	public static void main(String[] args) {
		// 编写一个程序，向c:/temp/abc.txt写入100行"hello "
		charWriter();
	}
}
